/********************************************************************************
 * Project Name		[JavaSE_Fundamentals]
 * File Name     	[TestDecimalFormat.java]
 * Creation Date 	[2015-01-01]
 * 
 * Copyright© ge.y.yang@gmail.com All Rights Reserved
 * 
 * Work hard, play harder, think big and keep fit
 ********************************************************************************/
package api.text;

import java.text.DecimalFormat;
import java.text.ParseException;

/**
 * java.text.DecimalFormat测试
 * 
 * @author 不落的太阳(Sean Yang aka ShortPeace)
 * @version 1.0
 * @since jdk 1.8
 * 
 */
public class TestDecimalFormat {

	/**
	 * 将数字转换为字符串<br/>
	 * 
	 * 在格式化的时候会自动进行舍入, 舍入模式是: 向"最接近的"数字舍入, 如果与两个相邻数字的距离相等, 则向相邻的偶数舍入<br/>
	 * 
	 * 模式中的"."表示小数分隔符<br/>
	 * 模式中的"0"表示如果该位存在字符, 则显示字符, 如果不存在, 则显示0<br/>
	 * 模式中的"#"表示如果该位存在字符, 则显示字符, 如果不存在, 则不显示, #只能出现在模式的两头, 不能在0中间<br/>
	 * 
	 */
	public static void convertNumberToString() {
		double number = 12345.678;

		DecimalFormat decimalFormat = new DecimalFormat();
		System.out.println("默认格式化: " + decimalFormat.format(number));

		decimalFormat = new DecimalFormat("###,###.0000");
		System.out.println("按照模式\"###,###.0000\"格式化: " + decimalFormat.format(number));

		decimalFormat = new DecimalFormat("000,000.####");
		System.out.println("按照模式\"000,000.####\"格式化: " + decimalFormat.format(number));

		String pattern = "0.0000E00";
		decimalFormat = new DecimalFormat();
		decimalFormat.applyPattern(pattern);
		System.out.println("按照模式\"0.0000E00\"格式化: " + decimalFormat.format(number));

		pattern = "\u00A4###,###.00%";
		decimalFormat.applyPattern(pattern);
		System.out.println("按照模式\"0.0000E00\"格式化: " + decimalFormat.format(number));
	}

	/**
	 * 将字符串转换为数字
	 * 
	 * @param numberStr
	 *            待转换的字符串
	 */
	public static void convertStringToNumber() {
		String numberStr = "32.00%";
		try {
			System.out.println("格式化前: " + numberStr);
			double number = new DecimalFormat().parse(numberStr).doubleValue();
			System.out.println("格式化后: " + number);
		} catch (ParseException e) {
			e.printStackTrace();
		}
	}

	public static void main(String[] args) {
		convertNumberToString();
		convertStringToNumber();
	}
}
